package com.liuqi.aiagent.transfer.common;

import com.liuqi.openai.tool.ToolCallRequest;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * 对话响应结果
 *
 * 以json格式保存到对话记录表的 output 字段中
 *
 * @author liuqi
 * @date 2025/7/22
 **/
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class ChatResultMessage {

    /**
     * 开始时间
     */
    private Long startTime;

    /**
     * 结束对话时间
     */
    private Long endTime;

    /**
     * AI消息
     */
    private AssistantMessage assistantMessage;

    /**
     * 工具执行结果
     */
    private ToolCallResult toolCallResult;

    @Setter
    @Getter
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    @ToString
    public static class AssistantMessage {
        /**
         * response id
         */
        private String id;

        /**
         * 内容
         *
         */
        private String content;

        /**
         * 思考内容
         *
         * 如果有思考内容, 则不为空
         */
        private String reasoningContent;

        /**
         * 思考内容耗时
         *
         * 如果有思考内容，则需要设置深度思考的耗时
         */
        private Float thinkDuration;

        /**
         * 工具调用
         *
         * 如果有工具调用, 则不为空
         */
        private List<ToolCallRequest> toolCallRequests;

    }

    @Setter
    @Getter
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    @ToString
    public static class ToolCallResult {
        /**
         * 工具名称
         */
        private String name;

        /**
         * 工具执行结果
         */
        private String result;

        /**
         * 工具调用ID
         */
        private String toolCallId;
    }

}
